第44回 シェル芸勉強会振り返り Node.jsのObjectに関する基本
第44回 シェル芸勉強会振り返り 午前の部 Node.jsのObjectに関する基本 記憶に残ったのは以下のような書き方
Objectの特定のフィールドだけ取り出す
code:field.js
const obj = {"x":10.0, "y":20.2};
const {x, y} = obj;
関数にObjectを渡すときにフィールドを指定
引数の順序を意識しなくて良い
code:func.js
const obj = {"x":10.0, "y":20.2};
function func1({x}) {
console.log(x);
}
func1(obj);
Objectの簡易な値コピー
JavaとかのDeepCopyまではいかないが、簡易の値コピーができる フィールドの値がObjectのときは、そのObjectの参照をコピーする点に注意
なのでDeepCopyではない
code:copy_obj.js
// 値コピーをする
// ただしオブジェクト型のフィールドに対しては参照コピー
const newObj = {...obj}
// 配列もオブジェクトなので同様の記法で値コピーができる
JSON.stringifyからのJSON.parseで値コピーもできるが、以下の点で問題がある
値にundefinedを入れてると変換した時にキーごと消える
10nといったBigInt値はstringifyするときにそもそも変換できずエラーで死ぬ
値に関数を入れてると変換時にエラーにならないが結局消える
この辺の挙動はJSONの記法にそもそもundefinedや関数、BigIntが定義されていないので仕方ないのだろう 細かい挙動は把握してなかったけれどReact.jsを触ってたときだいたい知った内容だったので多少把握していた が、LTで紹介されるとやはり奇妙な機能で、あまり好きな機能ではないと感じる
何が嫌かというと、「ググるときの名前が分からない」点
なんてググれば良いんだ